using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
using CommunityToolkit.Mvvm.ComponentModel;

namespace DesktopApp.ViewModels
{
    public class ViewModelBase : ObservableObject
    {
        // Remove manual INotifyPropertyChanged implementation:
        // public event PropertyChangedEventHandler? PropertyChanged;

        // The SetProperty method provided by ObservableObject is generally sufficient
        // unless you have custom logic here. We can remove this version.
        // protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string? propertyName = null)
        // {
        //     if (EqualityComparer<T>.Default.Equals(field, value)) return false;
        //     field = value;
        //     OnPropertyChanged(propertyName);
        //     return true;
        // }

        // ObservableObject provides OnPropertyChanged. Remove this version.
        // protected void OnPropertyChanged([CallerMemberName] string? propertyName = null)
        // {
        //     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        // }
        
        // Keep any other base functionality needed by view models
    }
} 